<template>
    <div>
        <p>请选择你要购买的书籍</p>
        <ul>
            <li v-for="(item, ind) in arr" :key="ind">
                <span>{{ item["name"] }}</span>
                <button @click="buy(ind)">买书</button>
            </li>
        </ul>
        <table border="1" width="500" cellspacing="0">
            <tr>
                <th>序号</th>
                <th>书名</th>
                <th>单价</th>
                <th>数量</th>
                <th>合计</th>
            </tr>
            <tr v-for="(item, index) in arr" :key="index">
                <td>{{ index + 1 }}</td>
                <td>{{ item["name"] }}</td>
                <td>{{ item["price"] }}</td>
                <td>{{ item["count"] }}</td>
                <td>{{ item["price"] * item["count"] }}</td>
            </tr>
        </table>
        <p>总价格为: {{ allPrice }}</p>
    </div>
</template>
  
<script>
export default {
    data() {
        return {
            arr: [
                {
                    name: "水浒传",
                    price: 107,
                    count: 0,
                },
                {
                    name: "西游记",
                    price: 192,
                    count: 0,
                },
                {
                    name: "三国演义",
                    price: 219,
                    count: 0,
                },
                {
                    name: "红楼梦",
                    price: 178,
                    count: 0,
                },
            ],
        };
    },
    methods: {
        buy(index) {
            this.arr[index]["count"]++;
        },
    },
    computed: {
        allPrice() {
            // 数组里放的是对象, 而对象是复杂类型, 引用关系, 值改变会触发计算属性重新执行
            return this.arr.reduce((sum, obj) => {
                return (sum += obj["price"] * obj["count"]);
            }, 0);
        },
    },
};
</script>
  
<style></style>